object ForComprehensionDemo extends App {
  // 定义学生原始成绩
  val rawScores: List[Double] = List(75.0, 82.5, 90.0, 68.0, 85.5, 79.0, 92.0)

  // 1. 使用for推导式转换为标准分
  val standardScores = for (score <- rawScores) yield score * 0.8 + 20
  println(s"原始分数: $rawScores")
  println(s"标准分数: $standardScores")

  // 2. 带守卫的for推导式：筛选标准分≥80的成绩
  val excellentScores = for {
    score <- standardScores
    if score >= 80
  } yield score
  println(s"优秀标准分（≥80）: $excellentScores")

  // 3. 复杂转换：同时保留原始分和标准分
  val scoreDetails = for {
    raw <- rawScores
    standard = raw * 0.8 + 20
  } yield (raw, standard, if (standard >= 80) "达标" else "未达标")

  println("\n成绩详情：")
  scoreDetails.foreach { case (raw, std, status) =>
    println(f"原始分: $raw%.1f -> 标准分: $std%.1f（$status）")
  }

  // 4. 计算优秀学生的平均分
  val avgExcellent = if (excellentScores.nonEmpty) {
    excellentScores.sum / excellentScores.length
  } else 0.0
  println(f"\n优秀学生标准分平均分: $avgExcellent%.1f")
}